leetcodeJS

Personal solution for leetcode problem using Javascript

View on GitHub

Problem

You are given a 0-indexed integer array nums and a target element target.

A target index is an index i such that nums[i] == target.

Return a list of the target indices of nums after sorting nums in non-decreasing order. If there are no target indices, return an empty list. The returned list must be sorted in increasing order.

Example 1:

Input: nums = [1,2,5,2,3], target = 2 Output: [1,2] Explanation: After sorting, nums is [1,2,2,3,5]. The indices where nums[i] == 2 are 1 and 2.

Example 2:

Input: nums = [1,2,5,2,3], target = 3 Output: [3] Explanation: After sorting, nums is [1,2,2,3,5]. The index where nums[i] == 3 is 3.

Example 3:

Input: nums = [1,2,5,2,3], target = 5 Output: [4] Explanation: After sorting, nums is [1,2,2,3,5]. The index where nums[i] == 5 is 4.

Constraints:

1 <= nums.length <= 100 1 <= nums[i], target <= 100

Pre analysis

Sorting and then finding index of target element is straight forward and will be O(nlogn) time complexity. However, we can do better by using the count of numbers of occurences and numbers below the target. the First index of occurence will be NumbersBelowTarget+1 till NumbersBelowTarget+totalTargetCounts . This will be O(n) time complexity.

Another solution

var getTargetIndices = function (nums, target) {
  nums.sort((a, b) => a - b);
  let arr = [];
  nums.forEach((num, index) => {
    if (num == target) {
      arr.push(index);
    }
  });
  return arr;
};